#pragma once

#include "Include.h"

class CoordinateGetter
{
public:
	virtual int GetX(int posX, int posY, int offset) = 0;
	virtual int GetY(int posX, int posY, int offset) = 0;
};

class HorizontalGetter : public CoordinateGetter
{
public:
	virtual int GetX(int posX, int posY, int offset)
	{
		return posX + offset;
	}

	virtual int GetY(int posX, int posY, int offset)
	{
		return posY;
	}
};

class VerticalGetter : public CoordinateGetter
{
public:
	virtual int GetX(int posX, int posY, int offset)
	{
		return posX;
	}

	virtual int GetY(int posX, int posY, int offset)
	{
		return posY + offset;
	}
};

class UpToDownDiagonalGetter : public CoordinateGetter
{
public:
	virtual int GetX(int posX, int posY, int offset)
	{
		return posX + offset;
	}

	virtual int GetY(int posX, int posY, int offset)
	{
		return posY + offset;
	}
};

class DownToUpDiagonalGetter : public CoordinateGetter
{
public:
	virtual int GetX(int posX, int posY, int offset)
	{
		return posX + offset;
	}

	virtual int GetY(int posX, int posY, int offset)
	{
		return 18 - posY - offset;
	}
};